package cn.jingyuan.bee.enums;

public interface EnumString extends BaseEnum<String> {

    /**
     * 查找 enumClass 对应 value 的 Enum。
     *
     * @param enumClass 枚举类
     * @param nameOrValue 枚举值 or 枚举名称
     * @param <E> value 的类型
     *
     * @return 枚举
     */
    static <E extends Enum & EnumString> E from(Class<E> enumClass, String nameOrValue) {
        if (null == nameOrValue) {
            return null;
        }

        E[] values = enumClass.getEnumConstants();
        for (E e : values) {
            if (e.getValue().equalsIgnoreCase(nameOrValue) || e.name().equalsIgnoreCase(nameOrValue)) {
                return e;
            }

        }
        return null;
    }

    /**
     * 获取枚举值
     *
     * @return 枚举值
     */
    String getValue();

}
